package com.onlineMIS.unit_testing;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;

import com.onlineMIS.ORM.entity.chainS.sales.ChainSalesVO;
import com.onlineMIS.ORM.entity.chainS.sales.ChainStoreSalesOrder;
import com.onlineMIS.ORM.entity.chainS.user.ChainUserInfor;
import com.onlineMIS.ORM.entity.headQ.barcodeGentor.Color;
import com.onlineMIS.ORM.entity.headQ.barcodeGentor.Product;
import com.onlineMIS.ORM.entity.headQ.barcodeGentor.ProductBarcode;
import com.onlineMIS.ORM.entity.headQ.barcodeGentor.Size;
import com.onlineMIS.common.Common_util;

public class testProduct {
	private Configuration configuration = new Configuration().configure();
	private SessionFactory sFactory = configuration.buildSessionFactory();
	private Session session = sFactory.openSession();
	
	public testProduct() {
		
	}
	
	public void process(int chainId, Date startDate, Date endDate, double salesAmt, int fromSaler, int toSaler) {
		Transaction transaction = session.beginTransaction();
		


		transaction.commit();
		session.close();
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Set<Double> netAmtKeySet =  new TreeSet<Double>(new Comparator<Double>() {

			@Override
			public int compare(Double o1, Double o2) {
				return Double.compare(o2, o1);
			}
		});
		
		Map<Double, List<Integer>> netAmtMap = new TreeMap<Double, List<Integer>>(new Comparator<Double>() {
			@Override
			public int compare(Double o1, Double o2) {
				return Double.compare(o2, o1);
			}
		});
		
		netAmtKeySet.add(10.0);
		netAmtKeySet.add(3.3);
		netAmtKeySet.add(2.0);
		netAmtKeySet.add(1.2);
		netAmtKeySet.add(1.0);
		netAmtKeySet.add(0.4);
		netAmtKeySet.add(0.56);
		netAmtKeySet.add(2.0);
		netAmtKeySet.add(6.2);
		netAmtKeySet.add(1.5);
		netAmtKeySet.add(7.4567);
		netAmtKeySet.add(5.3);
		netAmtKeySet.add(3.0);
		netAmtKeySet.add(2.0);
		netAmtKeySet.add(1.2);
		netAmtKeySet.add(1.0);
		netAmtKeySet.add(0.4);
		
		List<Integer> testList1 = new ArrayList<Integer>();
		testList1.add(10);
		testList1.add(2);
		testList1.add(3);
		List<Integer> testList2 = new ArrayList<Integer>();
		testList2.add(11);
		testList2.add(21);
		testList2.add(13);
		List<Integer> testList3 = new ArrayList<Integer>();
		testList3.add(1);
		testList3.add(6);
		testList3.add(73);
		List<Integer> testList4 = new ArrayList<Integer>();
		testList4.add(111);
		testList4.add(22);
		testList4.add(43);
		List<Integer> testList5 = new ArrayList<Integer>();
		testList5.add(140);
		testList5.add(23);
		testList5.add(38);
		List<Integer> testList6 = new ArrayList<Integer>();
		testList6.add(130);
		testList6.add(82);
		testList6.add(2);
		List<Integer> testList7 = new ArrayList<Integer>();
		testList7.add(13);
		testList7.add(32);
		testList7.add(53);
		List<Integer> testList8 = new ArrayList<Integer>();
		testList8.add(12);
		testList8.add(23);
		testList8.add(32);
		List<Integer> testList9 = new ArrayList<Integer>();
		testList9.add(34);
		testList9.add(23);
		testList9.add(45);
		List<Integer> testList10 = new ArrayList<Integer>();
		testList10.add(56);
		testList10.add(34);
		testList10.add(23);
		
		netAmtMap.put(10.0,testList1);
		netAmtMap.put(3.3,testList2);
		netAmtMap.put(2.0,testList3);
		netAmtMap.put(1.2,testList4);
		//netAmtMap.put(1.0,testList5);
		netAmtMap.put(0.4,testList6);
		netAmtMap.put(0.56,testList7);
		//netAmtMap.put(2.0,testList8);
		netAmtMap.put(6.2,testList9);
		netAmtMap.put(1.5,testList10);
		netAmtMap.put(7.4567,testList10);
		netAmtMap.put(5.3,testList10);
		netAmtMap.put(3.0,testList10);
		netAmtMap.put(2.0,testList10);
		netAmtMap.put(1.2,testList10);
		netAmtMap.put(1.0,testList10);
		netAmtMap.put(0.4,testList10);
		
		Set<Double> netAmtKeySet2 = netAmtMap.keySet();
		System.out.println(netAmtKeySet);
		System.out.println(netAmtKeySet2);
		
		Collection<List<Integer>> netAmtMapValuesList = netAmtMap.values();
		List<Integer> orderIdList = new ArrayList<Integer>();
		for (List<Integer> Ids: netAmtMapValuesList)
			orderIdList.addAll(Ids);
		
		System.out.println(orderIdList);
		List<Integer> valuesDoubles = new ArrayList<Integer>();
		for(Double keyDouble : netAmtKeySet2)
			valuesDoubles.addAll(netAmtMap.get(keyDouble));
		System.out.println(valuesDoubles);
		
		System.out.println("-----------------------");
		
		ChainSalesVO vo1 = new ChainSalesVO(1, 2.3);
		ChainSalesVO vo2 = new ChainSalesVO(2, 3.3);
		ChainSalesVO vo3 = new ChainSalesVO(3, 1.3);
		ChainSalesVO vo4 = new ChainSalesVO(4, 0.3);
		ChainSalesVO vo5 = new ChainSalesVO(5, 7.3);
		ChainSalesVO vo6 = new ChainSalesVO(6, 8.3);
		List<ChainSalesVO> salesVOs = new ArrayList<ChainSalesVO>();
		salesVOs.add(vo1);
		salesVOs.add(vo2);
		salesVOs.add(vo3);
		salesVOs.add(vo4);
		salesVOs.add(vo5);
		salesVOs.add(vo6);
		
		Collections.sort(salesVOs, new Comparator<ChainSalesVO>() {
			@Override
			public int compare(ChainSalesVO o1, ChainSalesVO o2) {
				return new Double(o2.getNetAmt()).compareTo(new Double(o1.getNetAmt()));
			}
		});
		
		for (ChainSalesVO vo : salesVOs)
			System.out.println(vo);

	}

}
